package com.zzw.spring.component;

import com.zzw.spring.annotation.AutoWired;
import com.zzw.spring.annotation.Component;
import com.zzw.spring.annotation.Scope;
import com.zzw.spring.processor.InitializingBean;

//如果指定了一个value，那么在注入spring容器时，以你指定为准
//如果没有指定value，则使用类名首字母小写名字
@Component//把我们的Monster注入到我们自己的Spring容器中
@Scope(value = "prototype")
public class MonsterService implements InitializingBean {
    //这里使用自己的注解，来修饰一个属性字段，表示该属性是通过容器完成依赖注入的
    //说明：这里我们实现按照名字来实现组装即可
    @AutoWired
    private MonsterDao monsterDao;

    public void m1(){
        monsterDao.hi();
    }

    //1.该方法可以理解为就是在bean的setter方法执行完毕后被spring容器调用
    //2.即初始化方法
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("MonsterService初始化方法被调用，在这里程序员可以添加上自己的逻辑/业务");
    }
}
